package com.yungu.swift.order.model.dto;

import com.yungu.swift.base.model.BaseDto;

import java.util.Date;


/**
 * Copyright © 厦门云谷互联信息有限公司 2018-2020 All Right Reserved
 * 订单DTO
 *
 * @author cuixiuyin - Generate
 * @version 1.0.0-RELEASE
 * @since 2018-07-03 15:24
 */

public class OrderDto extends BaseDto {
    /**
     * 订单号
     **/
    private String orderNo;

    /**
     * 订单创建乘客ID
     **/
    private String passengerUuid;

    /**
     * 指派司机UUID
     **/
    private String assignDriverUuid;

    /**
     * 实际接单司机UUID
     **/
    private String actualDriverUuid;

    /**
     * 所乘车辆uuid
     **/
    private String carUuid;

    /**
     * 订单类型（时效性）：1 实时订单 2 预约订单
     **/
    private Integer typeTime;

    /**
     * 订单类型（行程）：1：用车，2：日租，3：半日租，4：送机，5：接机
     **/
    private Integer typeTrip;

    /**
     * 订单类型（个人/企业）：1 个人；2 企业
     **/
    private Integer typeEnt;

    /**
     * 订单类型（本人/代客）：1 本人；2 代客
     **/
    private Integer typeSelf;

    /**
     * 订单类型（主/子订单）：1 主订单；2 子订单
     **/
    private Integer typeMain;

    /**
     * 订单来源：1 APP移动端；2 微信公众号；3 电话叫车；4 pc网站
     **/
    private Integer source;

    /**
     * 订单主状态
     **/
    private Integer mainStatus;

    /**
     * 订单子状态(100.等待应答 200.等待接驾-预约 201.等待接驾-已出发未到达 202.等待接驾-已到达 300.行程开始 400.待支付 500.已完成(待评价) 501.已完成-已评价 600.取消-自主取消 601.取消-后台取消 602.取消-应答前取消)
     **/
    private Integer subStatus;

    /**
     * 支付目的（1.支付车费 2.充值）
     **/
    private Integer payPurpose;

    /**
     * 支付端（1.乘客 2.司机）
     **/
    private Integer paySide;

    /**
     * 支付方式（1.支付宝 2.微信 4.余额 3.现金）
     **/
    private Integer payType;

    /**
     * 预支付方式（1企业支付，2个人支付）
     **/
    private Integer prepayType;

    /**
     * 企业ID
     **/
    private String entUuid;

    /**
     * 主订单UUID
     **/
    private String mainOrderUuid;

    /**
     * 是否开票（0待开票、1待寄出、2已寄出、3已取消、4已作废）
     **/
    private Integer isBilled;

    /**
     * 是否允许指派其他司机（1 允许；2 不允许）
     **/
    private Integer isAllowAssigned;

    /**
     * 支付时间
     **/
    private Date payTime;

    /**
     * 派单或抢单成功时间
     **/
    private Date distributeTime;

    /**
     * 乘客发单经度
     **/
    private String passengerLng;

    /**
     * 乘客发单纬度
     **/
    private String passengerLat;

    /**
     * 座位
     **/
    private Integer seatNum;

    /**
     * 订单匹配开始时间
     **/
    private Date matchTime;

    private String validJson;

    /**
     * 订单模块类型（1：出租车，2：专车，3：拼车，4：快车，5：小件）
     **/
    private Integer typeModule;

    /**
     * 订单交互类型（1：推单，2：抢单）
     **/
    private Integer typeInteractive;

    /**
     * 订单车型ID
     **/
    private String carModelUuid;

    /**
     * 乘客发单IP地址
     **/
    private String passengerIp;

    /**
     * 乘客发单端口号
     **/
    private Integer passengerPort;

    /**
     * 乘客发单IMEI
     **/
    private String passengerImei;

    /**
     * 乘客发单MAC地址
     **/
    private String passengerMac;

    /**
     * 拼车路线ID
     **/
    private String wayUuid;

    /**
     * 拼车类型（1拼车 2包车）
     **/
    private Integer typeJoin;

    /**
     * 拼车业务状态：100提交（待支付）、200预约中（已支付）、300预约成功（待安排）、400已安排（待出发）、410行程开始（待接驾）、420到达上车地点（待上车）、430已上车、500行程开始、600行程结束（已完成）
     **/
    private Integer joinStatus;

    /**
     * 订单关闭状态（0正常/已完成 1关闭）
     **/
    private Integer closeStatus;

    /**
     * 订单关闭类型（PAS_CANCEL乘客主动取消 DRI_CANCEL司机端取消【预留】 TIME_OUT超时系统自动取消 ADMIN_CLOSE后台关闭 默认：null）
     **/
    private String closeType;

    // 附加字段
    /**
     * 取消时间
     */
    private Date cancelTime;

    private Date pasArrTime;

    private double waitMile;

    private double tripDistance;

    private Integer payStatus;

    /**
     * 付费模式 1先付费 2后付费
     */
    private Integer payPattern;

    /**
     * 订单需求 1普通拼车 2机场专线
     */
    private Integer orderDemand;

    /**
     * 外部订单回调地址
     */
    private String extCallbackUrl;

    /**
     * 外部订单ID
     */
    private String extOrderId;

    /**
     * 是否顺路订单
     */
    private Integer sameWayOrder;

    public Date getPasArrTime() {
        return pasArrTime;
    }

    public void setPasArrTime(Date pasArrTime) {
        this.pasArrTime = pasArrTime;
    }

    public double getWaitMile() {
        return waitMile;
    }

    public void setWaitMile(double waitMile) {
        this.waitMile = waitMile;
    }

    public double getTripDistance() {
        return tripDistance;
    }

    public void setTripDistance(double tripDistance) {
        this.tripDistance = tripDistance;
    }

    public Integer getSeatNum() {
        return seatNum;
    }

    public void setSeatNum(Integer seatNum) {
        this.seatNum = seatNum;
    }

    public String getPassengerLng() {
        return passengerLng;
    }

    public void setPassengerLng(String passengerLng) {
        this.passengerLng = passengerLng;
    }

    public String getPassengerLat() {
        return passengerLat;
    }

    public void setPassengerLat(String passengerLat) {
        this.passengerLat = passengerLat;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public Date getDistributeTime() {
        return distributeTime;
    }

    public void setDistributeTime(Date distributeTime) {
        this.distributeTime = distributeTime;
    }

    public String getPassengerUuid() {
        return this.passengerUuid;
    }

    public String getAssignDriverUuid() {
        return this.assignDriverUuid;
    }

    public void setAssignDriverUuid(String assignDriverUuid) {
        this.assignDriverUuid = assignDriverUuid;
    }

    public void setActualDriverUuid(String actualDriverUuid) {
        this.actualDriverUuid = actualDriverUuid;
    }

    public String getCarUuid() {
        return this.carUuid;
    }

    public Integer getTypeTime() {
        return this.typeTime;
    }

    public void setTypeTime(Integer typeTime) {
        this.typeTime = typeTime;
    }

    public Integer getTypeTrip() {
        return this.typeTrip;
    }

    public void setTypeTrip(Integer typeTrip) {
        this.typeTrip = typeTrip;
    }

    public Integer getTypeEnt() {
        return this.typeEnt;
    }

    public void setTypeEnt(Integer typeEnt) {
        this.typeEnt = typeEnt;
    }

    public void setTypeSelf(Integer typeSelf) {
        this.typeSelf = typeSelf;
    }

    public Integer getTypeMain() {
        return this.typeMain;
    }

    public Integer getSource() {
        return this.source;
    }

    public void setSource(Integer source) {
        this.source = source;
    }

    public Integer getMainStatus() {
        return this.mainStatus;
    }

    public void setMainStatus(Integer mainStatus) {
        this.mainStatus = mainStatus;
    }

    public void setSubStatus(Integer subStatus) {
        this.subStatus = subStatus;
    }

    public Integer getPayPurpose() {
        return payPurpose;
    }

    public void setPayPurpose(Integer payPurpose) {
        this.payPurpose = payPurpose;
    }

    public Integer getPaySide() {
        return paySide;
    }

    public void setPaySide(Integer paySide) {
        this.paySide = paySide;
    }

    public Integer getPayType() {
        return this.payType;
    }

    public Integer getPrepayType() {
        return this.prepayType;
    }

    public void setPrepayType(Integer prepayType) {
        this.prepayType = prepayType;
    }

    public String getEntUuid() {
        return this.entUuid;
    }

    public void setEntUuid(String entUuid) {
        this.entUuid = entUuid;
    }

    public void setMainOrderUuid(String mainOrderUuid) {
        this.mainOrderUuid = mainOrderUuid;
    }

    public Integer getIsBilled() {
        return this.isBilled;
    }

    public void setIsBilled(Integer isBilled) {
        this.isBilled = isBilled;
    }

    public void setIsAllowAssigned(Integer isAllowAssigned) {
        this.isAllowAssigned = isAllowAssigned;
    }

    public Date getPayTime() {
        return payTime;
    }

    public void setPayTime(Date payTime) {
        this.payTime = payTime;
    }

    public Date getMatchTime() {
        return matchTime;
    }

    public void setMatchTime(Date matchTime) {
        this.matchTime = matchTime;
    }

    public String getValidJson() {
        return validJson;
    }

    public void setValidJson(String validJson) {
        this.validJson = validJson;
    }

    public Integer getTypeModule() {
        return typeModule;
    }

    public void setTypeModule(Integer typeModule) {
        this.typeModule = typeModule;
    }

    public Integer getTypeInteractive() {
        return typeInteractive;
    }

    public void setTypeInteractive(Integer typeInteractive) {
        this.typeInteractive = typeInteractive;
    }

    public String getCarModelUuid() {
        return carModelUuid;
    }

    public void setCarModelUuid(String carModelUuid) {
        this.carModelUuid = carModelUuid;
    }

    public Date getCancelTime() {
        return cancelTime;
    }

    public void setCancelTime(Date cancelTime) {
        this.cancelTime = cancelTime;
    }

    public String getPassengerIp() {
        return passengerIp;
    }

    public void setPassengerIp(String passengerIp) {
        this.passengerIp = passengerIp;
    }

    public Integer getPassengerPort() {
        return passengerPort;
    }

    public void setPassengerPort(Integer passengerPort) {
        this.passengerPort = passengerPort;
    }

    public String getPassengerImei() {
        return passengerImei;
    }

    public void setPassengerImei(String passengerImei) {
        this.passengerImei = passengerImei;
    }

    public String getPassengerMac() {
        return passengerMac;
    }

    public void setPassengerMac(String passengerMac) {
        this.passengerMac = passengerMac;
    }

    public Integer getPayStatus() {
        return payStatus;
    }

    public void setPayStatus(Integer payStatus) {
        this.payStatus = payStatus;
    }

    public String getWayUuid() {
        return wayUuid;
    }

    public void setWayUuid(String wayUuid) {
        this.wayUuid = wayUuid;
    }

    public Integer getJoinStatus() {
        return joinStatus;
    }

    public void setJoinStatus(Integer joinStatus) {
        this.joinStatus = joinStatus;
    }

    public Integer getTypeJoin() {
        return typeJoin;
    }

    public void setTypeJoin(Integer typeJoin) {
        this.typeJoin = typeJoin;
    }

    public Integer getCloseStatus() {
        return closeStatus;
    }

    public void setCloseStatus(Integer closeStatus) {
        this.closeStatus = closeStatus;
    }

    public String getCloseType() {
        return closeType;
    }

    public void setCloseType(String closeType) {
        this.closeType = closeType;
    }

    public String getActualDriverUuid() {
        return actualDriverUuid;
    }

    public void setCarUuid(String carUuid) {
        this.carUuid = carUuid;
    }

    public void setPassengerUuid(String passengerUuid) {
        this.passengerUuid = passengerUuid;
    }

    public Integer getTypeSelf() {
        return typeSelf;
    }

    public void setTypeMain(Integer typeMain) {
        this.typeMain = typeMain;
    }

    public Integer getSubStatus() {
        return subStatus;
    }

    public void setPayType(Integer payType) {
        this.payType = payType;
    }

    public String getMainOrderUuid() {
        return mainOrderUuid;
    }

    public Integer getIsAllowAssigned() {
        return isAllowAssigned;
    }

    public Integer getPayPattern() {
        return payPattern;
    }

    public void setPayPattern(Integer payPattern) {
        this.payPattern = payPattern;
    }

    public Integer getOrderDemand() {
        return orderDemand;
    }

    public void setOrderDemand(Integer orderDemand) {
        this.orderDemand = orderDemand;
    }

    public String getExtCallbackUrl() {
        return extCallbackUrl;
    }

    public void setExtCallbackUrl(String extCallbackUrl) {
        this.extCallbackUrl = extCallbackUrl;
    }

    public String getExtOrderId() {
        return extOrderId;
    }

    public void setExtOrderId(String extOrderId) {
        this.extOrderId = extOrderId;
    }

    public Integer getSameWayOrder() {
        return sameWayOrder;
    }

    public void setSameWayOrder(Integer sameWayOrder) {
        this.sameWayOrder = sameWayOrder;
    }
}
